const base = {}


base.sendAjaxRequest = (method, url, body=null, file=null) => {
    return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.open(method, url);

        xhr.responseType = 'json';

        setHeaders(xhr, body, file);
        xhr.onload = () => resolve(xhr.response)
        sendResponse(xhr)
    })


    // НИЖЕ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ

    function sendResponse(xhr) {
        if (body) {
            xhr.send(JSON.stringify(body));
        } else if(file) {
            const formData = new FormData();
            formData.append('file', file.fileData, file.fileName);
            xhr.send(formData);
        } else {
            xhr.send();
        }
    }

    function setHeaders(xhr, body, file) {
        // Устанавливаем заголовки
        
        if(body) {
            xhr.setRequestHeader('X-CSRFToken', body.token);
            xhr.setRequestHeader('Content-Type', 'application/json');
        } else if(file) {
            xhr.setRequestHeader('X-CSRFToken', file.token);
        }
    }
}


base.get_basic_information_about_single_product = () => {
    // Получаем основную информацию отдельного продукта

    const token = document.querySelector(
        '.buy-product-form>input[name="csrfmiddlewaretoken"]'
    ).value;
    const product_id = document.querySelector('[data-product-id]').value;
    return [token, product_id]
}


base.showNotification = (message) => {
    // Показываем оповещение

    const element = document.createElement('div');
    element.classList.add('standard-notification');
    element.innerHTML = `
        <div class="content-of-standard-notification">
            <p class="text-of-standard-notification">
                ${message}
            </p>
            <button class="standard-button" data-close-standard-notification>
                Понятно
            </button>
        </div>
    `;
    document.body.insertAdjacentElement('beforeend', element);
}
